/**
 * URL处理工具函数
 * 统一处理图片URL的显示和存储
 */

import { getProxyImageUrl } from '@/api/auth'

/**
 * 将相对路径转换为完整的后端URL
 * @param {string} url - 相对或绝对URL
 * @returns {string} 完整的URL
 */
export function convertToFullUrl(url) {
  if (!url) return ''
  
  // 如果是相对路径（本地上传的文件），转换为完整的后端URL
  if (url.startsWith('/')) {
    return 'http://localhost:8082' + url
  }
  
  return url
}

/**
 * 检查URL是否需要代理访问
 * @param {string} url - 图片URL
 * @returns {boolean} 是否需要代理
 */
export function needsProxy(url) {
  const proxyDomains = [
    'baidu.com', 'bcebos.com',           // 百度
    'xhscdn.com', 'xiaohongshu.com',     // 小红书
    'qq.com', 'qpic.cn',                 // 腾讯
    'weibo.com', 'sinaimg.cn',           // 微博
    'douyin.com', 'bytedance.com',       // 抖音
    'bilibili.com', 'hdslb.com',         // B站
    'zhihu.com', 'zhimg.com'             // 知乎
  ]
  
  return proxyDomains.some(domain => url.includes(domain))
}

/**
 * 处理图片URL，支持本地文件和代理访问
 * @param {string} url - 原始图片URL
 * @returns {string} 处理后的可访问URL
 */
export function processImageUrl(url) {
  if (!url) return ''
  
  // 如果是相对路径（本地上传的文件），转换为完整的后端URL
  if (url.startsWith('/')) {
    return 'http://localhost:8082' + url
  }
  
  // 检查是否需要代理访问
  if (needsProxy(url)) {
    return getProxyImageUrl(url)
  }
  
  return url
}

/**
 * 准备存储到后端的URL
 * 为了保持一致性，我们将完整URL转换为相对路径存储
 * @param {string} url - 完整URL
 * @returns {string} 适合存储的URL
 */
export function prepareUrlForStorage(url) {
  if (!url) return ''
  
  // 如果是本地文件的完整URL，转换为相对路径
  if (url.startsWith('http://localhost:8082/')) {
    return url.replace('http://localhost:8082', '')
  }
  
  // 其他URL保持原样
  return url
}